/*
 * BitHandler.h
 *
 *  Created on: 14/05/2010
 *      Author: gus
 */

#ifndef BITHANDLERINPUT_H_
#define BITHANDLERINPUT_H_

#include <iostream>
#include <fstream>
#include <bitset>

using namespace std;

/* el BitHandlerInput recibe un caracter por vez,y logra descomponerlos en 8 bits.
 * este puede suministrar esos bits de a uno, secuencialmente a quien se los pida
 * los devuelve en forma de booleanos, de la misma forma q c++ trata a los unos y ceros
 * debido al funcionamiento de bitset, los bits se ordenan al reves en el vector:S
 */

class BitHandlerInput {

private:
	ifstream archEntrada;
	bitset<8*sizeof(char)> bitSet;
	int indexBitset; // posicion del prox bit q sera devuelto
    bool eofv;
public:

	BitHandlerInput() {};
	BitHandlerInput(const char* fileName, int pos);
	bool siguienteBitEsUno();//getBit();
	void leerSiguienteChar();
	void seek(int pos);
	bool eof();
	void setEof();
	void resetEof();
	bool eofVirtual();
	virtual ~BitHandlerInput();

	//de prueba
	char getCharActual();
};

#endif /* BITHANDLERINPUT_H_ */
